home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / BOI200P.ZIP / BOI200.DOC < prev    next >
Text File  |  1992-12-14  |  28KB  |  610 lines

  1. BOI Developer Reference Manual 2.00  12/15/92
  2.  
  3.     BBS Onliner Interface 2.00 (Pascal)
  4.     (C) 1992 Andrew J. Mead
  5.     All Rights Reserved.
  6.  
  7.     Contact:
  8.     POB 1155
  9.     Chapel Hill, NC 27514-1155
  10.           or
  11.     1:3641/417 FidoNet   75:7919/417 DoorNet
  12.     #1@9952 WWIVnet      #1@9395 VirtualNet
  13.  
  14.     Turbo Pascal and TP are registered trademarks of Borland International.
  15.     Borland Pascal and BP are registered trademarks of Borland International.
  16.  
  17.     Sections in order of Appearance
  18.        1 Initial Statement
  19.        2 ShareWare Liscense Agreement
  20.        3 Registration Cost
  21.        4 Technical Support
  22.        5 Style Conventions
  23.  
  24.        6 How to write an Onliner (overview)
  25.        7 Substitutions
  26.  
  27.        8 Global Constants
  28.        9 Global Types
  29.       10 Global Static Variables (Typed Constants)
  30.       11 Global Variables
  31.       12 Unit Explanations
  32.  
  33.       13 Features
  34.       14 Future Enhancements
  35.       15 Message Bases
  36.  
  37.  1) Initial Statement.
  38.       Thanks to Kent Ogle, John Reid, Mike Robinson, Joe Dabrowski, and
  39.       Jochen Ott.  The BOI 2.00 is the result of 8 months of intense
  40.       programming effort.  I release the BOI 1.20 to the public two
  41.       years ago fully intending to continue developement.  Two factors
  42.       conspired against me.  The first was my getting a 40-50 hour/week
  43.       programming job.  The second was lack of registrations and support
  44.       from the general public.  I tend to blame the second on myself.  I
  45.       was new to Shareware, and I misunderstood the market.  I was
  46.       arguably the worst technical writer ever to hit the streets.  I
  47.       still look back on the BOI 1.20 very proudly.  I consider it a
  48.       fine piece of work.  It took me only three months to write the
  49.       entire thing.  I had owned a modem less than a year at that point.
  50.  
  51.       Times have changed, and I've learned how to write documentation.
  52.       Earlier this year (1992), I finally was able to free up enough
  53.       time to look back on the BOI.  For my own releases, I was up to
  54.       BOI 1.23 which only contained a couple minor changes from the BOI
  55.       1.20.  For those of you familiar with the BOI 1.20, this release
  56.       may come as a complete surprise.  There are nearly 1000 more lines
  57.       of source code, and the code that remains has been greatly
  58.       rewritten.  I've also renamed all of the standard variables.
  59.  
  60.       Thanks for taking the time to look at my product.  I hope you like
  61.       it.  I can be reached at the addresses found throughout the
  62.       documentation.  Don't hesitate to contact me.
  63.  
  64.  
  65.  2) Shareware License Agreement
  66.       This package is ShareWare.  If you use this package, you are
  67.       required to register it.  If you merely use this package as a
  68.       learning tool, and you do not use any portions of it in your own
  69.       programming, you are not obligated to register.
  70.  
  71.       If you write any software that uses the BBS Onliner Interface,
  72.       your opening copyright screen must include this after your own
  73.       copyright messages.
  74.  
  75.               BBS Onliner Interface version 2.00
  76.               (C) 1992 Andrew J. Mead
  77.               All Rights Reserved.
  78.               Contact: POB 1155 Chapel Hill, NC 27514-1155
  79.  
  80.       If you only use parts of the BOI, you can use this instead.
  81.  
  82.               portions (C) 1992 Andrew J. Mead (BOI 2.00)
  83.               All Rights Reserved.
  84.               Contact: POB 1155 Chapel Hill, NC 27514-1155
  85.  
  86.       If you alter the code, put your revision number AFTER the '2.00'
  87.       ie (version 2.00 rev 1a).  I will maintain, and steadily
  88.       update the interface.  If you have any ideas, suggestions, or
  89.       improvements, please send them to me.  There is plenty of room for
  90.       enhancement, addition, and improvement in the interface.
  91.  
  92.  
  93.  3) Registration Costs
  94.       Here is a basic chart of costs ($US):
  95.                              Standard Professional Standard+Pro Upgrade
  96.           North Carolina  -   $31.80     $53.00          $63.60
  97.           USA & Canada    -   $30.00     $50.00          $60.00
  98.           Other Countries -   $33.00     $53.00          $66.00
  99.       This chart reflects registration fees, processing costs, and
  100.       taxes.  It does not include your postage to me, or any of your
  101.       currency conversion costs.
  102.  
  103.       Registration Options:
  104.         Standard Registration ($US25+fees)
  105.         Standard Registration gives you license to use the BOI or
  106.         portions thereof in any Shareware or Freeware software that you
  107.         may write.  Registration will not expire, and you are entitled
  108.         to use any future public (non-beta) MS-DOS releases as well.
  109.  
  110.       Professional Registration ($45US+fees)
  111.       Professional Upgrade from Standard Registration ($25US+fees)
  112.         Professional Registration gives you all the rights of the
  113.         Standard Registration.  I also will make available to you (via
  114.         download from my BBS, or via Fido FREQ) current BOI betas.  I
  115.         will also send you the current source code (you must sign the
  116.         non-disclosure agreement contained in the registration form) to
  117.         my online game Madness.  You will also will have the option of
  118.         carrying the Fido Technology message area BOI-BETA.
  119.  
  120.       Commercial Registration and License
  121.         If you intend to write commercial software with the BBS Onliner
  122.         Interface, or portions thereof, you will need to contact me
  123.         personally to negotiate an appropriate license agreement.
  124.  
  125.       Note: All new registrations of the BOI 1.20 ($35US) received after
  126.         December 15th, 1992 will be treated as Standard Registrations.
  127.         Those received before June 30th, 1993 will be offered a $10US
  128.         credit towards upgrading to the Professional Registration that
  129.         is good until December 15, 1993.
  130.  
  131.       Processing Fees
  132.         Canada and United States : $5.00
  133.         Others                   : $8.00
  134.         The processing fee is used to cover my diskette, postage, and
  135.         phone costs associated with staying in contact with registered
  136.         users.
  137.  
  138.  
  139.  4) Technical Support
  140.       I am always willing to offer support.  I can be reached on my BBS.
  141.  
  142.      Infinite Improbability BBS - Private Idaho BBS - The Old Same Place
  143.                           +919-489-9446 (v32b)
  144.                    1:3641/417 FidoNet  @9395 VirtualNet
  145.                     @9952 WWIVnet  75:7919/417 DoorNet
  146.  
  147.       Programming support can also be found in the message area BOI-PROG
  148.       BOI-PROG is currently in private distribution among FidoNet
  149.       systems.  If enough interest warrants, I will attempt to backbone
  150.       this echo.  I can also be reached via postal mail, be sure to
  151.       include a self addressed stamped envelope to guarantee reply.
  152.  
  153.       I am always looking for people to help with technical support.
  154.  
  155.  
  156.  5) Style Conventions.
  157.       This document, and my other documentation files, are 72 characters
  158.       wide.  The document can be shifted to the right when printing to
  159.       allow for ring binder holes to be punched without text wrapping
  160.       around.  There are no imbeded form feeds.
  161.  
  162.       My programming style is:
  163.  
  164.         - Capitalize procedure and function calls [WriteLn('sample')]
  165.         - Fully capitalize procedural declarations [Procedure DOTHIS;]
  166.         - Four space basic indentation scheme with matching begin..end
  167.           pairs offset two spaces.
  168.         - Nested procedures indented two spaces
  169.         - repeat..until code blocks include begin..end pair
  170.         - Const, Type, and Var are only capitalized for global blocks
  171.         - Blank statements supressed (remove unnecessary semi-colons)
  172.         - Procedural blocks are commented with all nested calls.
  173.             Functions are preceded with "f"
  174.             Interrupts are preceded with "i"
  175.             Objects are preceded with "o"
  176.             Program blocks are preceded with "p"
  177.             Unit blocks are preceded with "u"
  178.  
  179.             Function TESTVAL : word;
  180.               Procedure INCCOUNTERS(cnta, cntb : longint);
  181.                 begin {* fTestVal,IncCounters *}
  182.                 end;  {* fTestVal,IncCounters *}
  183.  
  184.  
  185.  6) How To Write an Onliner
  186.       The BBS Onliner Interface comes with a working online game (HiLo)
  187.       that you can compile and run!  HiLo follows the same structure,
  188.       and uses much of the same code as most of my online games.  By
  189.       examining HiLo, or modifying it into another game, you can see
  190.       how simple programming with the BOI can be.  By using the BOI,
  191.       you, the programmer, need not be concerned with anything other
  192.       than writing the game or utility.  The BOI handles communications,
  193.       the interface to the BBS, and video output.
  194.  
  195.       To write an onliner, you'll need to include several units into
  196.       your Unit clause, put the proper values in DOORLIB.DAT, and
  197.       substitute certain BOI procedures, functions, and variables for
  198.       the ones you are currently using (see next section.)
  199.  
  200.       The following is a working shell of an online game.
  201.  
  202.         Program Onliner;
  203.  
  204.         Uses
  205.           DOS,
  206.           CRT,
  207.           KEY,
  208.           BOIDECL,
  209.           DOORLIB,
  210.           GETCMBBS,
  211.           IOLIB,
  212.           SUPPORT;
  213.  
  214.         Procedure PLAYGAME;
  215.           begin {* PlayGame *}
  216.             { This is the main program block for your game }
  217.           end;  {* PlayGame *}
  218.  
  219.         begin {* pOnliner *}
  220.           if boi_allowavt then QueryUser(['Q','1'..'4')
  221.           else QueryUser(['Q','1','2']);
  222.           WriteCopy(false);
  223.           repeat
  224.             begin
  225.               PlayGame
  226.               EndGame('Players',playerpoints > 0,bois_points,
  227.                   bois_highscore)
  228.             end
  229.           until not boi_replay
  230.         end.  {* pOnliner *}
  231.  
  232.       DOORLIB.DAT
  233.         You will need to create a copy of this include file for each of
  234.         the doors you write.  This is the information that needs to be
  235.         supplied:  (Sample data from HiLo's DOORLIB.DAT)
  236.  
  237.           'HILOINFO.DOC',   (* HiLo documentation filename *)
  238.               This is show to the user when GetCmBBS.GetCommand
  239.               encounters a fatal initialization condition.
  240.           'HILOHOF.TXT',    (* HiLo text Hall of Fame filename *)
  241.               This is used by Support.EndGame.
  242.           'HILOHOF.DAT',    (* HiLo data Hall of Fame filename *)
  243.               This is used by Support.EndGame.
  244.           'BOI.LOG',        (* activity / error log filename *)
  245.               This can be overridden by use of environment variables.
  246.           'HiLo',           (* game name *)
  247.           '2.00');          (* game version number *)
  248.  
  249.           dl_progset : set of char = [#00];
  250.                             (* valid additional command line switches *)
  251.  
  252.  7) Substitutions
  253.       This is a quick list of Turbo Pascal Procedures, Functions, and
  254.       variables that should not be used in your online door.  Where
  255.       applicable, the equivalent BOI procedure or variable is given.
  256.       Remember, this is only a guide.  Most of these procedures are
  257.       to be avoided because they don't affect the remote screen, and
  258.       they don't update certain BOI variables (i.e. boi_l_textattr).
  259.  
  260.       --Sample
  261.       TurboFunction          BOIFunction               necessity
  262.           Additional notes on what is going here
  263.  
  264.       --Procedures and Functions
  265.       System.Append          IOLib.OpenText            recommended
  266.       Crt.AssignCrt          -none-
  267.           This procedure should not be called
  268.       Crt.ClrEOL             IOLib.ClrPortEOL          required
  269.       Crt.ClrScr             IOLib.ClrPortScr          required
  270.       Crt.DelLine            -none-
  271.           This procedure should not be called
  272.       Crt.GotoXY             IOLib.GotoPortXY          required
  273.       Crt.HighVideo          -none-
  274.       Crt.InsLine            -none-
  275.           This procedure should not be called
  276.       Crt.KeyPressed         IOLib.PortKeyPressed      required
  277.       Crt.LowVideo           -none-
  278.       Crt.NormVideo          -none-
  279.       Crt.NoSound            -none-
  280.       System.Read (file)     System.BlockRead          recommended
  281.       Crt.ReadKey            IOLib.ReadPortKey         required
  282.       System.ReadLn          IOLib.GetString           required
  283.       System.Reset (file)    IOLib.OpenFile            recommended
  284.       System.Reset (text)    IOLib.OpenText            recommended
  285.       System.Rewrite (file)  IOLib.OpenFile            recommended
  286.       System.Rewrite (text)  IOLib.OpenText            recommended
  287.       Crt.Sound              -none-
  288.       Crt.TextBackground     IOLib.PortBackground      required
  289.       Crt.TextColor          IOLib.PortColor           required
  290.       Crt.TextColor          IOLib.TextPortColor       required
  291.       Crt.TextMode           -none-
  292.           This procedure should not be called
  293.       Crt.WhereX             -none-
  294.       Crt.WhereY             -none-
  295.           Extreme caution should be used with these two functions.
  296.           You should consider IOLib.SetPortXY and IOLib.ResetPortXY.
  297.       Crt.Window             IOLib.PortWindow          required
  298.       System.Write (video)   IOLib.SendString(,false)  required
  299.       System.WriteLn (video) IOLib.SendString(,true)   required
  300.           For formatting output, you should use IOLib.IntStr,
  301.           IOLib.RealStr, and IOLib.PadStr.
  302.       System.Write (file)    System.BlockWrite         recommended
  303.  
  304.       --System variables
  305.       crt.directvideo        IOLib.SetLocalGraphMode
  306.           This variable should be left alone
  307.       crt.textattr           boi_l_textattr            required
  308.           Do not manually change boi_l_textattr.  The procedure
  309.           IOLib.ChangeColor should be used instead.  The variable
  310.           boi_r_textattr tracks the remote text attribute.
  311.       crt.windmin            -none-
  312.       crt.windmax            -none-
  313.           These variables should not be used
  314.  
  315.  8) Global Constants
  316.       BOIDECL
  317.         boi_version = '2.00'
  318.             Current BBS Onliner Interface version number.  This should
  319.             only be changed with permission.
  320.  
  321.         read_only = $00 (open file for reading)
  322.         writeonly = $01 (open file for writing)
  323.         readwrite = $02 (open file for reading and/or writing)
  324.             File access modes.
  325.  
  326.         denyall   = $10 (deny all file access to others)
  327.         denywrite = $20 (deny write to file access to others)
  328.         denyread  = $30 (deny read from file access to others)
  329.         denynone  = $40 (allow others to read and/or write to file)
  330.             File sharing (DOS Share) modes.  These are used by OpenFile
  331.             and OpenText.  When calling either of those procedures you
  332.             should add one access mode to one sharing mode:
  333.                 OpenFile(...,read_only + denynone,...);
  334.  
  335.       SUPPORT
  336.         bois_highscore = true
  337.         bois_lowscore  = false
  338.         bois_cash      = true
  339.         bois_points    = false
  340.             These are declared only to help increase the readability of
  341.             calling Procedure Support.EndGame.
  342.  
  343.  9) Global Types
  344.       BOIDECL
  345.         ptrmask
  346.             This is used to allow easy access to a pointer's segment and
  347.             offset.  This is used for absolute casting:
  348.                 var
  349.                   tempptr : pointer;
  350.                   tempmsk : ptrmask absolute tempptr;
  351.  
  352.         facctype        (file access modes)
  353.         tasktype        (Operating Systems/Environments)
  354.         boi_grmode      (video character graphics modes)
  355.         boi_commode     (remote communications modes)
  356.         boi_statmodes   (remote user status line modes)
  357.         boi_dropmode    (BBS drop file modes)
  358.             These simple enumerated types are used by the BOI to keep
  359.             track of its enviroment.
  360.  
  361.         stdproc
  362.             This is declared for basic procedural variables.
  363.  
  364. 10) Global Static Variables (Typed Constants)
  365.       BOIDECL
  366.       -setup
  367.         boi_local     = true      (local mode (no remote))
  368.         boi_echo      = false     (echo remote play on local console)
  369.         boi_quiet     = false     (supress output of bell (^G) to local
  370.                                    console)
  371.         boi_replay    = false     (allow user to play multiple games)
  372.         boi_statmode  = sm_time   (what to display on user status line)
  373.         dos_share     = true      (DOS Share is loaded)
  374.         boi_hoflim    = 20        (how many scores in HOF user can have)
  375.  
  376.       -time
  377.         boi_timeover  = false     (time has expired)
  378.         boi_againtime = 10 (mins) (minimum time for boi_replay checking)
  379.         boi_warntime  = 5 (mins)  (warn user about time remaining limit)
  380.  
  381.           the following are updated 18.2 times per second by the BOI's
  382.           timer interrupt.
  383.         boi_ticks     = $17fe80   (this initial value (24 hrs) is
  384.                                    re-initialized by GetCmBBS.  When it
  385.                                    reaches zero (0), time has expired)
  386.         boi_stall     = 0         (this counter increments.  It is used
  387.                                    by ReadPortKey to detect user
  388.                                    inactivity)
  389.         boi_timer     = 0         (this counter increments.  It is the
  390.                                    opposite of boi_ticks.  It shows
  391.                                    just how long the game has been
  392.                                    active.  This should be used instead
  393.                                    of any calls to MemL[$40:$0C])
  394.         boi_stime     = 0         (this variable holds the last timer
  395.                                    tick at which IOLib.UpdateStatLine
  396.                                    was called)
  397.  
  398.       -communications
  399.         boi_checkcd    = true     (carrier drop can be detected)
  400.         boi_cdlost     = false    (carrier has been lost during play)
  401.         boi_portnum    = 0        (0==COM1, 1==COM2, etc...)
  402.         boi_cmode      = com_none (internal BOI flag)
  403.         boi_str        = ' No Comm' (displayed on User Status Line)
  404.         foss_init      = $00      (bit flags detailing if and how
  405.                                    FOSSIL can be used.  See source
  406.                                    code (GetCmBBS) for details)
  407.  
  408.           The following are used by the BOI's internal comm routines.
  409.           If local play or FOSSIL routines are used, these are ignored.
  410.         boi_ctsrts     = false    (CTS/RTS handshaking is being used by
  411.                                    internal comm routines)
  412.         boi_portadd    = $03F8    (base port address for communications)
  413.         boi_portint    = $0C      (Interrupt used by IRQ)
  414.         boi_picmask    = $EF      (enabling mask for Programmable
  415.                                    Interrupt Controller (IRQ0..IRQ7))
  416.         boi_pic2msk    = $00      (enabling mask for second or cascade
  417.                                    PIC (IRQ8..IRQ15))
  418.         boi_cascade    = false    (IRQ in use is on cascade PIC)
  419.         boi_portstatus = false    (internal Async routines active)
  420.  
  421.       -video
  422.         boi_r_color   = false     (remote wants color/monochrome)
  423.         boi_l_color   = false     (local wants color/monochrome)
  424.         boi_allowavt  = false     (AVATAR/1 graphics are allowed)
  425.         boi_ansiarr               (ANSI codes mapped over color values)
  426.         boi_r_grmode  = gr_ansi   (remote graphics mode)
  427.         boi_l_grmode  = gr_tpcrt  (local graphics mode)
  428.  
  429.       -miscellaneous
  430.         boi_plusidx   = 0         (These variables are used by GetCmBBS
  431.         boi_minusidx  = 0          to let the program know that it needs
  432.         boi_equalidx  = 0          to perform additional command line
  433.         boi_closeidx  = 0          processing for door specific command
  434.         boi_openidx   = 0          line arguments.  Pass the value to
  435.         boi_dotidx    = 0          ParamStr())
  436.         boi_dmode     = dfnone    (drop file that was processed)
  437.         boi_nextchar  = #$00      (used to feed a character to GetString
  438.  
  439.       KEY
  440.         key_regnum     = 'N/A'    (Registration number)
  441.         key_regstr     = 'Unregistered Version'
  442.                                   (name of BBS that has registered)
  443.         key_registered = false    (game has been registered)
  444.         key_regname    = 'Your SysOp'
  445.                                   (name of registrant)
  446.  
  447. 11) Global Variables
  448.       BOIDECL
  449.       -setup
  450.         boi_gamepath   (path/filespec to current executable
  451.                         "C:\BBS\GAME\HILO.EXE")
  452.         boi_gamedir    (path to current excecutable "C:\BBS\GAME\")
  453.         boi_gamename   (current game file "HILO")
  454.         boi_gameext    (current executable extension ".EXE"
  455.         boi_tasker     (current operating system/environment)
  456.         boi_tvers      (operating system version number)
  457.         boi_tstr       (string description of current operating system)
  458.         boi_tintr      (basic interrupt to operating systems functions)
  459.         in_dos         (in_dos flag pointer)
  460.         BOI_Wait       (procedure to be called when giving up timeslice)
  461.         BOI_Crit       (procedure to call when beginning critical task)
  462.         BOI_Safe       (procedure to call when ending critical task)
  463.  
  464.       -time
  465.         boi_starttime  (starting time (hr,min,sec) of game)
  466.         boi_startdate  (starting date (yr,month,day) of game)
  467.         boi_usetime    (game is a timed game)
  468.         boi_gametime   (old variable indicating time in minutes, unused)
  469.         boi_ticksleft  (timer ticks left to play (1092 per minute))
  470.         boi_timexp     (time has expired indicator)
  471.  
  472.       -video
  473.         boi_pagelength (size of remote player's screen in lines)
  474.  
  475.       -player
  476.         boi_username   (player's alias/real name)
  477.         boi_usename    (boi_username is valid)
  478.         boi_realname   (player's real name if boi_username is alias)
  479.         boi_usereal    (boi_realname is valid)
  480.  
  481.       -miscellaneous
  482.         boi_texthof    (pathfilespec for text Hall of Fame)
  483.  
  484.       SUPPORT
  485.         playerpoints   (playerscore variable)
  486.  
  487.  
  488. 12) Unit Explanations
  489.       BOIDECL
  490.         This unit is the basic foundation upon which the other units are
  491.         built.  This is where the vast majority of global variables and
  492.         values are defined and initialized.  The initialization code for
  493.         this unit installs the BOI's timer interrupt and checks to see
  494.         if the door is running under a multitasker.
  495.  
  496.       KEY
  497.         This is just a shell.  You'll have to write your own routines
  498.         for this one.
  499.  
  500.       DOORLIB
  501.         This unit provides basic information to the BOI about your door.
  502.         You need to maintain a seperate DOORLIB.DAT file for each of
  503.         your doors, and make sure that this unit is rebuilt upon
  504.         compilation.
  505.  
  506.       GETCMBBS
  507.         This self-initializing unit processes the command line, and
  508.         then initializes most of the system variables and calls the
  509.         routines to start remote communications.
  510.         This unit is the most replaceable.  If you wish to write BBS
  511.         specific doors, you merely need to insert your own command line
  512.         processing routines.  With your own routines, you can get any
  513.         additional dropfile information your door may require.
  514.  
  515.       ASYNC
  516.         This unit contains the BOI's internal Async routines and its
  517.         FOSSIL routines.  I recommend that you do NOT include this unit
  518.         in your program's Uses clause.  It functions best when left
  519.         undisturbed.  If you must access it, you should use the various
  520.         hooks available through the unit Support.
  521.  
  522.         This unit does not initialize itself (GetCmBBS gets the ball
  523.         rolling with a call to IOLib.SetPort).  It does, however, clean
  524.         up after itself.  The BOI is very fault tolerant.
  525.  
  526.       IOLIB
  527.         This is where it's at.  This unit contains all of the video,
  528.         input, output, and file routines.
  529.  
  530.       IOSUPP
  531.         This unit merely exists as a hook off of IOLib.ReadPortKey.  It
  532.         is used to decipher function key presses on the local keyboard.
  533.  
  534.       SUPPORT
  535.         This is a collection of additional routines that you may or may
  536.         not wish to use.  It contains a Copyright screen, Hall of Fame
  537.         routines, and a text file displayer.
  538.  
  539. 13) Features
  540.       o Distributed as Source Code
  541.       o FOSSIL driver support
  542.       o Internal Asynchronious routines
  543.       o non-standard IRQ/port address communications supported
  544.       o IRQs on second PIC supported (IRQ8..IRQ15)
  545.       o ANSI graphics support
  546.       o AVATAR/1 graphics support
  547.       o highly optimized video routines - redundant calls stripped
  548.       o local BIOS video and direct video modes
  549.       o local/remote video modes are seperately configureable
  550.       o multiple user status line display options
  551.       o file sharing/locking supported
  552.       o DESQview aware
  553.       o Windows aware
  554.       o OS/2 DOSbox aware
  555.       o gives up time to multi-taskers
  556.       o reads 18 different drop file formats
  557.       o runs directly under virtually all MS-DOS BBS software
  558.       o will compile as-is under TP5, TP55, TP60, and TP7
  559.  
  560. 14) Future Enhancements
  561.       Coming Soon: (on the drawing board, code fragments exists)
  562.       o GT Power support (ran out of time to include in this release)
  563.       o activity logging
  564.       o enhanced error trapping and logging
  565.       o natural language file support
  566.       o config file script language
  567.       o record locking/sharing
  568.       o additional graphics modes (YALEbbs, etc...)
  569.       o switch to Turbo Pascal 7.0 baseline
  570.  
  571.       Longer Range: (just some things I'm considering)
  572.       o object orientation
  573.       o comm routines for multiport boards (APIs needed)
  574.       o write language file compiler/decompiler
  575.       o ANSI sound or similiar
  576.       o use BP7 .DLLs for multinode engine
  577.       o take advantage of other new TP7 and BP7 features
  578.       o add transfer protocol engine (Xmodem, Zmodem)
  579.       o OS/2 version (compiler availability, additional registration)
  580.       o WinNT version (compiler availability, additional registration)
  581.  
  582. 15) Message Bases
  583.       If interest warrants, I am willing to contribute to support echos
  584.       in any of the more common hobby networks.  I am personally in
  585.       FidoNet, WWIVnet, DoorNet, and VirtualNet.  I have access to
  586.       RIME and GT PowerNet.  I can get access to USEnet and Internet.
  587.  
  588.       I have the following areas available from my BBS.  These are Fido
  589.       Technology Network (FTN) compatible message areas.  If interest
  590.       warrants, I will attempt to get the first two areas backboned in
  591.       Zone 1 (North America).
  592.  
  593.       BOI-GAMES
  594.         This is for discussion of any doors written with the BBS Onliner
  595.         Interface.  This is intended for users and SysOps to communicate
  596.         with eachother and door authors.
  597.  
  598.       BOI-PROG
  599.         This is for discussion of the latest public release version of
  600.         the BBS Onliner Interface.  Code fragments, ideas, and
  601.         suggestions are welcome.  I am willing to answer questions, but
  602.         I will not comment on any beta features.
  603.  
  604.       BOI-BETA
  605.         This echo is restricted.  It is only available to those who have
  606.         paid for a Professional Registration.  This echo will be a
  607.         clearing house for ideas and discussion of beta versions of the
  608.         BBS Onliner Interface.
  609.  
  610. END BOI Developer Reference Manual